// 作用域的问题
// 执行上下文（执行环境）：全局环境、函数环境、Eval环境


// 这就出现闭包，要理解闭包，首先要明白作用域链
function books() {
  var book = '书包里的书'
  var pen = '书包里的铅笔'
  console.log(pen)
  return function () {
    console.log(book)
  }
}
// let bag = books()
// bag()
console.log(books().toString())
console.log(books().book)



// TODO 一道测试题
for (var i = 0; i < 5; i++) {
  setTimeout(function () {
    console.log(i++);
  }, 2000)
}
console.log(i);

for (var i = 0; i < 5; i++) {
  (function (x) {
    setTimeout(function () {
      console.log(x);
    })
  })(i)
}
console.log(i);
